package br.com.pesca.validator;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

@FacesValidator(value = "novaSenhaValidator")
public class NovaSenhaValidator implements Validator {

    @Override
    public void validate(FacesContext facesContext, UIComponent uiComponent, Object object) throws ValidatorException {

        UIInput campoNovaSenha = (UIInput) facesContext.getViewRoot().findComponent("form1:novaSenha");

        if (campoNovaSenha == null) {
            throw new IllegalArgumentException(String.format("Incapaz de localizar o componente com id novaSenha"));
        }

        String novaSenha = (String) campoNovaSenha.getValue();

        String repitaSenha = (String) object;

        if (repitaSenha != null && repitaSenha.length() < 6) {
            throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "A Nova Senha deve ter pelo menos 6 dígitos.", ""));
        } else if (novaSenha != null && repitaSenha != null && novaSenha.length() >= 6 && !novaSenha.equals(repitaSenha)) {
            throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "As senhas digitadas não conferem, digite novamente.", ""));
        }
    }

}
